#pragma once

#include "IAmcShellModule.h"

#include "CBaseAmc.h"


class CAmcShellModule:public IAmcShellModule
{
public:
	declare_interface(CAmcShellModule);

private:
	CBaseAmc* GetShell(void* pCoreHandle);
	void ReleaseShell(CBaseAmc* pAmc);
};



#define THIS_IS_AMC(AmcType)	\
	link_to_implementation(CAmcShellModule,Default);\
	CBaseAmc* CAmcShellModule::GetShell(void* pCoreHandle)\
{\
	return new AmcType(pCoreHandle);\
}\
	void CAmcShellModule::ReleaseShell(CBaseAmc* pAmc)\
{\
	delete pAmc;\
}\
	DEFINE_CLASSES();